package com.hd.service.activiti;

import com.hd.entity.activiti.ElementDef;
import org.activiti.bpmn.model.UserTask;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;

public interface ElementDefService {
	/**
	 * 保存节点
	 * @param elementDef
	 */
	void save(ElementDef elementDef);

	/**
	 * 获取一条记录
	 * @param id
	 * @return
	 */
	ElementDef get(String id);
	/**
	 * 初始化节点
	 * @param procdefId
	 */
	void init(String procdefId);
	/**
	 * 删除节点
	 * @param id
	 */
	void delete(String id);
	/**
	 * 编辑节点
	 * @param elementDef
	 */
	void update(ElementDef elementDef);
	/**
	 * 查询下一个节点集合
	 * @param procdefId
	 * @param key
	 * @return
	 */
	List<ElementDef>getNextElementDefs(String procdefId, String key);
	/**
	 * 查询流程节点
	 * @param procdefId
	 * @return
	 */
	List<ElementDef> find(String procdefId);
	/**
	 * 查询起始节点
	 * @param procdefId
	 * @return
	 */
	ElementDef getStartElement(String procdefId);
	
	/**
	 * 查询前一个节点跳转集合
	 * @return
	 */
	List<ElementDef>getPrevElementDefs(String procdefId, String key);

	/**
	 * 查詢节点
	 * @param procdefId
	 * @param key
	 * @return
	 */
	 ElementDef findByParams(String procdefId, String key);
	 /**
	  * 获取下一任务节点
	  * @param procDefId
	  * @param taskDefKey
	  * @param map
	  * @return
	  */
	 List<UserTask> getNextNode(String procDefId, String taskDefKey, Map<String, Object> map);
	 /**
	  * 获取下一节点信息
	  * @param procDefKey
	  * @param startKey
	  * @param map
	  * @param objId
	  * @return
	  */
	 List<com.hd.entity.activiti.UserTask>getNextTaskNode(String procDefId, String procDefKey, String startKey, Map<String, Object> map, String objId, String userid);
	 
	 /**
	  * 保存下一步节点任务执行人
	  * @param procDefKey
	  * @param startKey
	  * @param objId
	  * @param map 
	  * @param request
	  */
	 void setNextNodeAssignees(String procDefKey, String startKey, String objId, Map<String, Object> map, HttpServletRequest request);
}
